A contact center is defined as a set of queues, onto which “calls” arrive, which may be phone calls, video calls, email, chat messages, instant messages and the like, and by a set of agents, who may answer the calls in some of the queues. Calls are stored in multiple queues for two reasons. On the one hand, by associating the right agents to each queue, the handling of each call can be optimized both in quality and in time. Therefore, a skill level is often associated to each pair, the agent and the queue, that is used to optimize this agent-to-call matching. On the other hand, calls are also separated into different queues to ensure different qualities of service depending on the expected value of the call from the company's (owner/operator of the contact center) point of view. The quality of service is defined by one or more service level agreements (SLA) that specify that a given percentage of the calls must be answered within so many seconds. Using these two requirements, it is common to assign agents to queues in order to optimize the handling of calls and to ensure the relative independence of the quality of service. However, a direct application of queuing theory shows that the efficiency of the contact center, measured by its throughput (number of calls answered per hour), is maximized by allowing agents to work on as many queues as possible. A multi-skilled workforce is more flexible, thus the idle time that is necessary to reach a given quality of service is reduced.
The dilemma to solve when routing calls is, therefore, to allow the flexibility and the throughput of a multi-skilled contact center, while ensuring the independence between the queues from a service level agreement point of view. This is a difficult problem because automatic call distribution (ACD) routing falls into the domain of on-line algorithms. Practical on-line algorithms are difficult to develop for many reasons. First, real world event distributions are regular but hard to predict. In the case of a contact center, this means that the call distribution can be characterized but the standard deviation is high. Moreover, the multi-skill aspect adds a combinatorial nature to the routing problem. Combinatorial stochastic problems are tricky because the combinational aspect yields a non-linearity that invalidates most statistical analysis techniques and produces a chaotic behavior.
Real world ACD routing algorithms use dynamic heuristics and simple, rule-based selection of calls and agents. Queues and calls may be assigned priorities, which are taken into account by the selection rules, among many other criteria such as skill level, priority and arrival time. In a multi-skill environment, finding the right number of agents for each queue, referred to as dimensioning, is done through simulation, and the weights may be finely tuned to obtained the desired SLAs. However, the variability of the problem makes this tuning quite difficult. Classic heuristics, such as first-fit and best-fit, do not provide the flexibility to guide routing based on SLAs. Using a first-fit process, when a new call arrives, or when an agent becomes available, the algorithm polls each queue until a match is found. The first match is returned. Best-fit is similar to first-fit, except that all matches are considered and the best one is returned. A commonly used heuristic for best-fit is to return the least qualified agents for a new call, and the most urgent call for a newly freed agent. Using the least qualified agents, as based on the agent's queue list and the agent's skill levels, maximizes the probability that another call may be handled by a more qualified agent later.
A solution has been proposed called service level routing (SLR). SLR routes calls according to SLAs by dynamically adjusting the size of the group of agents that can work on a given queue based on the current SLA satisfaction. A manner of implementing SLR is to sort a list of agents from less flexible to most flexible for each queue, and the most flexible agents may be temporarily removed from the list when other queues have more stringent SLAs. Where SLR is effective in meeting constraints associated with SLAs, there is a trade-off between meeting the SLAs and throughput of the contact center. By focusing primarily on meeting SLAs, SLR often suffers from reduced throughput.
It is desirable to control the routing algorithm by only stating the SLAs. Such a situation is referred to as declarative control. One method of implementing declarative control is reactive stochastic planning (RSP). RSP uses a planner to maintain a schedule that mixes the existing calls in the queues and forecasted future calls. This schedule is maintained regularly and is used to guide a best-fit algorithm that tries to reproduce what is forecasted in the schedule. This is a sophisticated method of implementing a reservation mechanism. Unfortunately, RSP plans for a worst case future that rarely, if ever, occurs in practice. As a result, resources can periodically be mis-allocated using RSP.
What is needed is an improved method of routing calls within a contact center by stating the service level agreements. What is also needed is a method of improving throughput of the contact center while meeting the service level agreements.